package cn.btks.resultintegration.achievements.service;

import cn.btks.commonserver.result.ResultState;
import cn.btks.resultintegration.achievements.pojo.EnvironmentAttribute;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;

/**
 * @Author lijun
 * @Date 2021/1/27 11:26
 */
public interface EnvironmentAttributeService {

    /**
     * 根据ID查询详情
     * @param id
     * @return
     */
    EnvironmentAttribute findById(Long id);

    /**
     * 分页查询环境管控要素
     * @param pageNumber
     * @param pageSize
     * @param code 环境要素管控分区编码
     * @param name 环境要素管控分区名称
     * @param cityName 师名称            
     * @param catalogId 目录ID
     * @return
     */
    ResultState findPage(Integer pageNumber, Integer pageSize, String code, String name,String cityName, Long catalogId);

    /**
     * 分页查询环境管控要素（查询某个师）
     * @param pageNumber
     * @param pageSize
     * @param code 环境要素管控分区编码
     * @param name 环境要素管控分区名称
     * @param catalogId 目录ID
     * @param cityId 师ID
     * @return
     */
    ResultState findPage(Integer pageNumber, Integer pageSize, String code, String name, Long catalogId,Long cityId);

    /**
     * 分页查询多个目录下的要素
     * @param pageNumber
     * @param pageSize
     * @param catalogIdList 目录ID列表
     * @return
     */
    ResultState findPage(Integer pageNumber, Integer pageSize, List<Long> catalogIdList);

    /**
     * 查询多个目录下的要素
     * @param catalogIdList
     * @param request
     * @return
     */
    ResultState findAllByCatalogIdList(List<Long> catalogIdList, HttpServletRequest request) throws Exception;

    /**
     * 保存环境要素单元对象
     * @param environmentAttribute
     * @return
     */
    ResultState save(EnvironmentAttribute environmentAttribute);

    /**
     * 批量保存环境要素单元对象
     * @param environmentAttributes
     * @return
     */
    ResultState saveAll(List<EnvironmentAttribute> environmentAttributes);

    /**
     * 根据成果ID删除属性信息
     * @param achievementId
     * @return
     */
    int deleteByAchievementId(Long achievementId);

    /**
     * 导出查询的要素单元清单
     * @param code
     * @param name
     * @param cityName
     * @param catalogId
     * @param request
     * @return
     * @throws IOException
     */
    ResultState export(String code,String name,String cityName, Long catalogId,HttpServletRequest request) throws IOException;
}
